% **************************************************************************
%
%  Package 'caratulaMetNum', version 0.1.
%        Acorde a pautas de presentación de Trabajos Practicos de Métodos Numéricos
%        1 Cuatrimestre de 2010

%        Este paquete es una ligera modificación de Raul Benitti a
%  Package 'caratula', version 0.2 (para componer caratulas de TPs del DC).
%  En caso de dudas, problemas o sugerencias sobre este package escribir a
%  Nico Rosner (nrosner arroba dc.uba.ar).
%
% **************************************************************************


% ----- Informacion sobre el package para el sistema -----------------------

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{caratula}[2010/4/12. Para TPs de Metodos Numericos (basado en: 2003/4/13 v0.1 Para componer caratulas de TPs del DC)]


% ----- Imprimir un mensajito al procesar un .tex que use este package -----

\typeout{Cargando package 'caratulaMetNum' v0.1 12/4/2010}


% ----- Algunas variables --------------------------------------------------

\let\Materia\relax
\let\Submateria\relax
\let\Titulo\relax
\let\Subtitulo\relax
\let\Grupo\relax
\let\Abstracto\relax

% ----- Comandos para que el usuario defina las variables ------------------

\def\materia#1{\def\Materia{#1}}
\def\submateria#1{\def\Submateria{#1}}
\def\titulo#1{\def\Titulo{#1}}
\def\subtitulo#1{\def\Subtitulo{#1}}
\def\grupo#1{\def\Grupo{#1}}
\def\abstracto#1{\def\Abstracto{#1}}

% ----- Token list para los integrantes ------------------------------------

\newtoks\intlist\intlist={}

% ----- Comando para que el usuario agregue integrantes

\def\integrante#1#2#3{\intlist=\expandafter{\the\intlist
    \rule{0pt}{1.2em}#1&#2&\tt #3\\[0.2em]}}

% ----- Token list para las palabras claves ------------------------------------

\newtoks\claveslist\claveslist={}

% ----- Comando para que el usuario agregue palabras claves

\def\palabraClave#1{\claveslist=\expandafter{\the\claveslist\textbf{\large#1}\hspace{2em}}}


% ----- Macro para generar la tabla de integrantes -------------------------

\def\tablaints{%
    \begin{tabular}{|l@{\hspace{4ex}}c@{\hspace{4ex}}l|}
        \hline
        \rule{0pt}{1.2em}Nombre & LU & Mail\\[0.2em]
        \hline
        \the\intlist
        \hline
    \end{tabular}}

\def\tablaclaves{%
    \begin{tabular}{c@{\hspace{4ex}}c@{\hspace{4ex}}c}
        \the\claveslist
    \end{tabular}}

% ----- Codigo para manejo de errores --------------------------------------

\def\se{\let\ifsetuperror\iftrue}
\def\ifsetuperror{%
    \let\ifsetuperror\iffalse
    \ifx\Materia\relax\se\errhelp={Te olvidaste de proveer una \materia{}.}\fi
    \ifx\Titulo\relax\se\errhelp={Te olvidaste de proveer un \titulo{}.}\fi
    \edef\mlist{\the\intlist}\ifx\mlist\empty\se%
    \errhelp={Tenes que proveer al menos un \integrante{nombre}{lu}{email}.}\fi
    \expandafter\ifsetuperror}


% ----- Reemplazamos el comando \maketitle de LaTeX con el nuestro ---------

\def\maketitle{%
    \ifsetuperror\errmessage{Faltan datos de la caratula! Ingresar 'h' para mas informacion.}\fi
    \thispagestyle{empty}
    \begin{center}
    %\vspace*{\stretch{2}}
    {\large Universidad de Buenos Aires}\\[0.5em]
    {\large Facultad de Ciencias Exactas y Naturales}\\[0.5em]
    {\large Departamento de Computaci\'on}
    \par\vspace{\stretch{1}}
    {\LARGE\textbf{\Materia}}\\[1em]
    \ifx\Submateria\relax\else{\Large \Submateria}\\[0.5em]\fi
    \par\vspace{\stretch{2}}
    {\Large \textbf{\Titulo}}\\[0.8em]
    {\Large \Subtitulo}
    \par\vspace{\stretch{2}}
    \ifx\Grupo\relax\else\textbf{\Grupo}\par\bigskip\fi
    \tablaints
    \vspace*{\stretch{2}}
    \begin{minipage}{.8\textwidth}
                \begin{sloppypar}
                \textbf{\large Abstract}\\
                        \Abstracto
                \end{sloppypar}
                \end{minipage}
    \vspace*{\stretch{3}}
    \bigskip


                \tablaclaves
        \end{center}
    \vspace*{\stretch{3}}
    \newpage
    }
